#!/usr/local/bin/lua

-- function 类型

function factorial(n)
	if n == 0 then
		return 1
	else
		return n * factorial(n - 1)
	end
end

print(factorial(5))


-- 函数作为参数传递
myprint = function(param)
	print("这是打印函数 -  ##",param,"##")
end

function add(num1, num2, functionPrint)
	result = num1 + num2
	functionPrint(result)
end

myprint(10)

add(2, 5, myprint)


-- 可变参数
function add(...)
local s = 0
  for i, v in ipairs{...} do   --> {...} 表示一个由所有变长参数构成的数组  
    s = s + v  
  end  
  return s  
end  
print(add(3,4,5,6,7))


-- 固定参数和可变参数
function fwrite(fmt, ...)  ---> 固定的参数fmt
	print("总共传入 " .. select('#', ...) .. "个数")
    return io.write(string.format(fmt, ...))    
end

fwrite("runoob\n")       --->fmt = "runoob", 没有变长参数。  
fwrite("%d%d\n", 1, 2)   --->fmt = "%d%d", 变长参数为 1 和 2